#include<iostream>
using namespace std;
int n,m;
void dfs(int u,int sum,int state)
{  //u变量记录总的递归次数
//sum记录有效的递归次数，即状态压缩中置1的个数
//state是记录状态压缩的变量
   if(sum==m)
   {  //当有效的置1的个数到达题目要求时，输出并结束递归
   for(int i=0;i<n;i++)
   if(state>>i&1)
    cout<<i+1<<' ';
    cout<<endl;
   	return;
   	
	}
	if(u==n)return;//总递归次数（即总的位运算的位数）达到上限时结束递归
	 
	dfs(u+1,sum+1,state|1<<u);//根据题意要先将低位进行标记 
	dfs(u+1,sum,state);
	
}
int main(){
	cin>>n>>m;
	dfs(0,0,0);
	return 0;
}

